package com.qn.sms.core.client.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

import java.util.Date;

/**
 * 短信接收状态
 * <p>
 * 参见 https://help.aliyun.com/document_detail/101867.html 文档
 *
 * @author 芋道源码
 */
@Data
public class SmsReceiveStatus {

    public static final String FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND = "yyyy-MM-dd HH:mm:ss";
    /**
     * 时区 - 默认
     */
    public static final String TIME_ZONE_DEFAULT = "GMT+8";

    /**
     * 手机号
     */
    @JsonProperty("phone_number")
    private String phoneNumber;
    /**
     * 发送时间
     */
    @JsonProperty("send_time")
    @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND, timezone = TIME_ZONE_DEFAULT)
    private Date sendTime;
    /**
     * 状态报告时间
     */
    @JsonProperty("report_time")
    @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND, timezone = TIME_ZONE_DEFAULT)
    private Date reportTime;
    /**
     * 是否接收成功
     */
    private Boolean success;
    /**
     * 状态报告说明
     */
    @JsonProperty("err_msg")
    private String errMsg;
    /**
     * 状态报告编码
     */
    @JsonProperty("err_code")
    private String errCode;
    /**
     * 发送序列号
     */
    @JsonProperty("biz_id")
    private String bizId;
    /**
     * 用户序列号
     * <p>
     * 这里我们传递的是 SysSmsLogDO 的日志编号
     */
    @JsonProperty("out_id")
    private String outId;
    /**
     * 短信长度，例如说 1、2、3
     * <p>
     * 140 字节算一条短信，短信长度超过 140 字节时会拆分成多条短信发送
     */
    @JsonProperty("sms_size")
    private Integer smsSize;

}
